package com.xgzit.xgzmall.cart.service;

import com.xgzit.xgzmall.cart.vo.Cart;
import com.xgzit.xgzmall.cart.vo.CartItem;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * @Author xgz
 * @Date 2021-06-14 20:34
 */

public interface CartService {

    /**
    * 添加商品到购物车
    * @param skuId: 商品Id
    * @param num:  商品数量
    * @return com.xgzit.xgzmall.cart.vo.CartItem
    */
    CartItem addToCart(Long skuId, Integer num) throws ExecutionException, InterruptedException;

    /**
    * 获取购物车的购物项
    * @param skuId:
    * @return com.xgzit.xgzmall.cart.vo.CartItem
    */
    CartItem getCartItem(Long skuId);

    /**
    * 获取购物车
    * @return com.xgzit.xgzmall.cart.vo.Cart
    */
    Cart getCart() throws ExecutionException, InterruptedException;

    /**
    * 清空购物车
    * @param cartKey:
    * @return void
    */
    void clearCart(String cartKey);
    /**
    * 勾选购物项
    * @param skuId:
    * @param check:
    * @return void
    */
    void checkItem(Long skuId, Integer check);

    /**
    * 改变商品数量
    * @param skuId:
    * @param num:
    * @return void
    */
    void changeItemCount(Long skuId, Integer num);

    /**
    * 删除购物项
    * @param skuId:
    * @return void
    */
    void deleteItem(Long skuId);

    /**
    * 获取登录用户的购物车数据
    * @return java.util.List<com.xgzit.xgzmall.cart.vo.CartItem>
    */
    List<CartItem> getUserCartItems();
}
